from flask import Flask
from werkzeug.routing import BaseConverter

"""自定义转换器, 手机号"""
class MobileConverter(BaseConverter):

    """手机号"""
    regex = r'1[3-9]\d{9}'


app = Flask(__name__)
# 将自定义转换器添加到转换器字典中，并指定转换器使用时名字为: mobile
app.url_map.converters['mobile'] = MobileConverter


"""动态路由
<>即是一个转换器，默认为字符串类型，即将该位置的数据以字符串格式进行匹配、并以字符串为数据类型类型、 user_id为参数名传入视图
Flask提供的其他类型的转换器：
DEFAULT_CONVERTERS = {
    'default':          UnicodeConverter,
    'string':           UnicodeConverter,
    'any':              AnyConverter,
    'path':             PathConverter,
    'int':              IntegerConverter,
    'float':            FloatConverter,
    'uuid':             UUIDConverter,
}
如果内置选择器满足不了需求, 可以自定义选择器


#@app.route('/users/<user_id>')
@app.route('/users/<int:user_id>')
def user_info(user_id):
    print(type(user_id))
    return 'hello, {}'.format(user_id)
"""

@app.route('/send_sms/<mobile:mobile>')
def mobile(mobile):
    print(type(mobile))
    return 'mobile: {}'.format(mobile)


if __name__ == '__main__':
    app.run()